import pandas as pd
import os
#to_string() 用于返回 DataFrame 类型的数据，如果不使用该函数，则输出结果,为数据的前面 5 行和末尾 5 行，中间部分以 ... 代替。
path='//home//kaka//code//data.csv'
# path='C:\\Users\\kakaxiiii\\Desktop\\data.csv'
df = pd.read_csv(path, encoding="utf-8")
index1 = df['金额'].notnull()
df = df[index1]
os.remove(path)
df.to_csv(path,index=False,encoding="utf-8")
df = pd.read_csv(path, encoding="utf-8")
df.columns = ['time_', 'money_', 'class_', 'class_2', 'pay_', 'note']

def addmoney():
    print("记账系统 - 添加 模式")
    print("请按以下格式输入记录")
    t1=input("时间:金额:大分类:二级分类:支付方式:备注:\n")
    t1_list = t1.split(':')
    print("请按以下格式输入记录")
    global df
    df1=pd.DataFrame([t1_list])
    global path
    df1.to_csv(path, mode='a', header=False,index=None, encoding="utf-8")
    print("添加成功(*^_^*)")


def Find():
    m1 = input("请输入查询的时间:\n")
    data1 = df.loc[df['time_'].str.contains(m1)]
    print(data1.to_string())


def findmoney1():
    m1 = input("请输入查询的年份:\n")
    data1 = df.loc[df['time_'].str.contains(m1)]
    print(data1.to_string())
    print("您该年的消费数据分析如下：\n")
    print(data1.describe())

def findmoney2():
        m1 = input("请输入查询的月份:\n")
        pattern = '(.*)-'+m1+'-(.*)'
        data1 = df.loc[df['time_'].str.contains(pattern, regex=True)]
        print(data1.to_string())
        print("您该月份的消费数据分析如下：\n")
        print(data1.describe())

def findmoney3():
    m1 = input("请输入查询的消费类型:\n")
    data1 = df.loc[df['pay_'].str.contains(m1, regex=True)]
    print(data1.to_string())
    print("您该消费类型的消费数据分析如下：\n")
    print(data1.describe())

def deletemoney():
    m1 = input("请输入要删除的数据日期:\n")
    global df
    row_index = df[df.time_ == m1].index.tolist()[0]
    df.drop(row_index, inplace=True) #inplace = True：不创建新的对象，直接对原始对象进行修改；
    os.remove(path)
    df.to_csv(path, index=False, encoding='utf-8')
    print("删除成功\n")

def updatemoney():
    print("已进入更新模式：\n")
    m0 = input("请输入需要修改的记录日期:\n")
    m2 = input("请输入新金额:\n")
    # df.columns = ['time_', 'money_', 'class_', 'class_2', 'pay_', 'note']
    df.loc[(df['time_'] == m0), 'money_'] = m2
    m3 = input("请输入需要修改的大分类:\n")
    df.loc[(df['time_'] == m0), 'class_'] = m3
    m4 = input("请输入需要修改的小分类:\n")
    df.loc[(df['time_'] == m0), 'class_2'] = m4
    m5 = input("请输入需要修改的小分类:\n")
    df.loc[(df['time_'] == m0), 'pay_'] = m5
    m6 = input("请输入需要修改的小分类:\n")
    df.loc[(df['time_'] == m0), 'note'] = m6
    df.to_csv(path, index=False, encoding='utf-8')

def ChaZhao():
    print("1.按消费时间段年进行分类统计显示")
    print("2.按消费时间段月进行分类统计显示")
    print("3.按消费类型进行分类统计显示")
    m0=input("请选择分类统计类型：")
    m0=int(m0)
    if m0 == 1:
        findmoney1()
    elif m0 == 2:
        findmoney2()
    elif m0 == 3:
        findmoney3()
    else:
        print("您输入的数据有误")

def printmenu():
    print("欢迎使用小刘记账系统(*^_^*)")
    print("1.查看所有消费信息")
    print("2.添加消费信息")
    print("3.更新消费信息")
    print("4.删除消费信息")
    print("5.查找消费信息")
    print("6.按照年份/月份/消费类型分类统计")
    m0 = input("请选择需要的功能》》》")
    m0=int(m0)
    if m0 == 1:
        print(df.to_string())
    elif m0 == 2:
        addmoney()
    elif m0 == 3:
        updatemoney()
    elif m0 == 4:
        deletemoney()
    elif m0 == 5:
         Find()
    elif m0 == 6:
        ChaZhao()

flag=1
while   flag:
    printmenu()
    df = pd.read_csv(path, encoding="utf-8")
    df.columns = ['time_', 'money_', 'class_', 'class_2', 'pay_', 'note']
    m0=input("是否继续使用系统（1/0）>>>")
    if(m0==0):
        print("谢谢使用(*^_^*)")
        flag=1